package com.qkjia.mvc.controller;

import com.qkjia.mvc.bean.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.Arrays;

/**
 * @author zhaoqiankun
 * @date 2021/9/6
 *   测试请求参数
 */
@Controller
public class ParamsController {


    @RequestMapping("/testServletAPI")
    //形参位置的request表示当前请求
    public String testServletAPI(HttpServletRequest request){
        // session走这个方法 会创建键为Jsession的cookie
        // session回话技术 ，默认的生命周期 浏览器开启 浏览器 关闭
        // cookie存在响应报文中的 穿件一个httpsession对象
        HttpSession session = request.getSession();
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        System.out.println("username:"+username+",password:"+password);
        return "success";
    }


    /**
     *     testParam?user_name=admin&password=123456&hobby=a&hobby=b&hobby=c
     *     @RequestParam(value = "user_name") 绑定请求参数 和请求值一样
     * @param username 用户名
     * @param password 密码
     * @param hobby 爱好
     * @param host 端口
     * @param JSESSIONID JessionId
     * @return
     */
    @RequestMapping("/testParam")
    public String testParam(
            @RequestParam(value = "user_name", required = false, defaultValue = "hehe") String username,
            String password,
            String[] hobby,
            @RequestHeader(value = "sayHaha", required = true, defaultValue = "haha") String host,
            @CookieValue("JSESSIONID") String JSESSIONID){
        //若请求参数中出现多个同名的请求参数，可以再控制器方法的形参位置设置字符串类型或字符串数组接收此请求参数
        //若使用字符串类型的形参，最终结果为请求参数的每一个值之间使用逗号进行拼接
        System.out.println("username:"+username+",password:"+password+",hobby:"+ Arrays.toString(hobby));
        System.out.println("host:"+host);
        System.out.println("JSESSIONID:"+JSESSIONID);
        return "success";
    }

    /**
     * 要求请求参数的名字和实体参数的名字 保持一致
     * @param user 用户
     * @return session
     */
    @RequestMapping("/testBean")
    public String testBean(User user){
        System.out.println(user);
        return "success";
    }

}
